Record Linkage no âmbito das bases de dados do SUS

Wagner Tassinari

wtassinari@gmail.com

DEMAT/ICE/UFRRJ & CIE/SMS-Rio

28/05/2023

O que é o Record Linkage

  • “… é uma solução para o problema em identificar registros em duas bases de dados que representam entidades idênticas, ou seja, registros considerados correspondentes (ex: pessoas, lugares, objetos ou eventos de forma geral).” (Fellegi IP & Sunter AB, 1969)

  • Para esta tarefa, o mais comum é utilizar as chaves primárias (identificador único) já existentes nas bases de dados (ex: CPF, CNS, DNV, DO, no prontuário, código do município, código do setor censitário, etc.) ou até mesmo os próprios atributos inerentes a cada registro (ex: nome, nome da mãe, data de nascimento, nome do bairro, etc.)

Record Linkage em bases de dados do SUS

  • O Record Linkage, no contexto das bases de dados do Sistema Único de Saúde (SUS) do Brasil, é um processo essencial. Ele envolve a integração e comparação de registros de diferentes bases de dados para identificar registros que se referem ao mesmo indivíduo ou evento.

  • Um dos maiores desafios enfrentados pelas bases de dados do SUS é a ausência de um identificador único para os pacientes comum na maioria das bases de dados. Esta lacuna complica a identificação de um mesmo indivíduo em diferentes bases, tornando mais complexa a tarefa de acompanhar e avaliar o histórico de saúde completo de uma pessoa.

Record Linkage em bases de dados do SUS

  • Por exemplo, um paciente pode ter registros no Sistema de Informações Hospitalares (SIH), no Sistema de Informações Ambulatoriais (SIA), e também no Sistema de Informações sobre Mortalidade (SIM). O Record Linkage permite que essas bases de dados distintas sejam unificadas, criando um perfil mais completo da trajetória de saúde do paciente. Isso é crucial para a continuidade do cuidado dos indivíduos, a avaliação da qualidade dos serviços, a realização de estudos epidemiológicos e para o planejamento em saúde.

Tipos de Linkage

  • Manual

    • Não é viável à medida que o número de registros aumenta.
  • Determinístico

    • Comparações automáticas onde tudo precisa corresponder ou regras específicas de dados devem ser programadas.

    • Precisa de uma nova regra para cada variação nos dados.

    • Não generalizável para outros conjuntos de dados.

  • Probabilístico

    • Estimar a probabilidade de duas entidades serem iguais.

    • Lida com dados ausentes e variações na codificação.

Linkage Determinístico

Fonte: Fundamentos de Record Linkage e sua aplicação nas bases de dados do SUS

  • Visa avaliar se os pares de registros são exatamente iguais em ambas as bases de dados, de modo que a concordância precisa ser total para que dois registros sejam considerados como um match (par).

  • Percebam que em ambas as bases de dados, as variáveis são do tipo texto, portanto apenas os registros que são exatamente iguais serão pareados a partir de uma abordagem determinística.

Linkage Probabilístico

Fonte: Fundamentos de Record Linkage e sua aplicação nas bases de dados do SUS

  • Visando resolver as limitações do método determinístico, o probabilístico irá permitir que em um vetor de comparação os resultados não se limitem apenas a 0 (falso) ou 1 (verdadeiro), isso quer dizer que os registros podem ser parcialmente iguais.

Linkage Probabilístico

  • Utilizando a mesma lógica do exemplo anterior, aqui podemos ver os mesmo indivíduos, porém com um atributo a mais (a data de nascimento).

  • Apesar do nome está escrito de maneira distinta, as datas de nascimento são idênticas e portanto, o método probabilístico vai identificar (a partir de um critério pré-definindo) que existe uma alta probabilidade de que sejam os mesmos sujeitos nas bases distintas.

https://rpubs.com/ahmademad/RecordLinkage

Fluxo de um Linkage probabilístico

Figura 1: A note on using the F-measure for evaluating record linkage algorithms

Fluxo de um Linkage probabilístico

  • Pré-processamento: Limpeza e padronização dos dados, construção das chaves de relacionamento

  • Redução do espaço de pesquisa: Blocagem

  • Comparação: métricas de string, comparações de anos, comparações numéricas

  • Classificação: Modelo Fellegi-Sunter

  • Previsão final: pontos de corte, validação

Limpeza e padronização dos dados

  • A preparação de dados é uma etapa crucial antes de iniciar qualquer análise. Neste processo, é essencial padronizar elementos como por exemplo as datas de nascimento, adaptando-os a um formato únicoDiferentes bases de dados podem apresentar as datas em estilos variados, como DD/MM/AAAA, MM/DD/AAAA, MM/DD/AA, DD-MM-AAAA, DDMMAAAA, entre outros. Portanto, é necessário uniformizar estes formatos para assegurar a consistência entre diferentes conjuntos de dados que precisam ser combinados.

  • Além disso, uma prática comum na padronização é converter todos os campos de texto para letras maiúsculas e remover caracteres especiais, como Á, á, ç, Í, í, Ó, â, entre outros.

  • Remoção das preposições.

Indexação e blocking

  • Desenvolvimento de chaves de relacionamento, por exemplo as Statistical Linkage Key (SLK).

  • Geralmente as SLK’s são formadas pela concatenação de atributos (ex: nome + nome da mãe + data do nascimento) de forma direta ou via criptografia (ex: HASH MD5).

  • Tais estratégias também podem ser usadas para o linkage determinístico.

Indexação e blocking

  • Visando otimizar o processamento computacional, as técnicas de blocagem irão estabelecer critérios de comparação com o intuito de reduzir os pares e diminuir o custo computacional quando grandes bases de dados forem pareadas.

  • Essa comparação é feita via estratégias de blocagem em alguns atributos inerente ao registros que possam ser agrupados, por exemplo: primeiro nome, ultimo nome, ano de nascimento, nome do bairro, etc.

Indexação e blocking

  • Nesta etapa, é possível o uso da função chamada Soundex, um algoritmo fonético usado principalmente para indexar nomes por som, como eles são pronunciado.

  • A função principal do Soundex é codificar palavras (frequentemente nomes próprios) de modo que homófonos sejam codificados para o mesmo valor. Isso torna o Soundex particularmente útil em aplicações onde se deseja encontrar nomes que soam semelhantes, apesar de serem escritos de formas diferentes.

Indexação e blocking

stringdist::phonetic("Ana")
[1] "A500"
stringdist::phonetic("Anna")
[1] "A500"

Indexação e blocking

stringdist::phonetic("Rafael")
[1] "R140"
stringdist::phonetic("Raphael")
[1] "R140"

Indexação e blocking

stringdist::phonetic("Eloa")
[1] "E400"
stringdist::phonetic("Eloah")
[1] "E400"

Indexação e blocking

stringdist::phonetic("Ana")
[1] "A500"
stringdist::phonetic("Hana")
[1] "H500"

Comparação

  • Comparação dos atributos via métricas de similaridade. São medidas que irão avaliar a similaridade total ou parcial entre uma cadeia de caracteres que compõe uma palavra ou expressão, resultando em uma pontuação. As mais utilizadas são:

  • Índice de Dice: O Índice de Dice é uma medida de similaridade utilizada no contexto de record linkage para quantificar a semelhança entre dois conjuntos de dados, frequentemente usados para avaliar a correspondência entre registros em diferentes bases de dados.

  • Distância de Jaccard: Mensura a similaridade entre dois conjuntos de strings quantificando a proporção de strings compartilhadas em relação ao total de strings únicas presentes nos dois registros.

Comparação

  • Distância de Levenshtein: é uma métrica que mede o número mínimo de operações necessárias para transformar uma sequência de caracteres em outra.

  • Jaro distance: calcula o número m de caracteres comuns que estão dentro da metade do comprimento da string mais longa e do número de transposições t

  • Jaro-Winkler distance: melhora o algoritmo Jaro aplicando ideias baseadas em estudos empíricos – Menos erros ocorrem no início das strings.

Comparação

# Chamando as bibliotecas
library(stringdist)
library(proxy)

# Entrando com os dados
nome1 <- "JOAO SANTO SOUSA"
nome2 <- "JOAO SANTOS SOUZA"
# Índice de Dice (usando o pacote proxy)
dice_dist <- proxy::dist(x = list(nome1, nome2), method = "Dice")
dice_sim <- 1 - as.numeric(dice_dist)
print(paste("Dice Similarity: ", dice_sim))
[1] "Dice Similarity:  1"
# Distância de Jaccard
jaccard_dist <- stringdist(nome1, nome2, method = "jaccard")
jaccard_sim <- 1 - jaccard_dist
print(paste("Jaccard Similarity: ", jaccard_sim))
[1] "Jaccard Similarity:  0.888888888888889"

Comparação

# Distância de Levenshtein
levenshtein_dist <- stringdist(nome1, nome2, method = "lv")
levenshtein_sim <- 1 - (levenshtein_dist / max(nchar(nome1), nchar(nome2)))
print(paste("Levenshtein Similarity: ", levenshtein_sim))
[1] "Levenshtein Similarity:  0.882352941176471"
# Distância de Jaro
jaro_dist <- stringdist(nome1, nome2, method = "jw", p = 0)
jaro_sim <- 1 - jaro_dist
print(paste("Jaro Similarity: ", jaro_sim))
[1] "Jaro Similarity:  0.928308823529412"
# Distância de Jaro-Winkler
jaro_winkler_dist <- stringdist(nome1, nome2, method = "jw", p = 0.1)
jaro_winkler_sim <- 1 - jaro_winkler_dist
print(paste("Jaro-Winkler Similarity: ", jaro_winkler_sim))
[1] "Jaro-Winkler Similarity:  0.956985294117647"

Classificação

  • O modelo Fellegi-Sunter (1969) é um método probabilístico para vinculação de registros que compara campos de diferentes registros, calcula pesos baseados nas probabilidades de correspondência verdadeira e falsa, e usa limiares de decisão para classificar pares como correspondências, não correspondências ou incertos.

Deduplicação

Os principais aspectos da técnica de RL é a Deduplicação de dados, isto é, eliminar dados duplicados visando diminuir o volume do BD e a formação de uma nova base de dados principal a partir dos dados de origem.

Figura 2: Deduplicação (figuras do site da biblioteca Splink)

Pipeline Linkage entre SIM vs SINASC

Ferramentas

Conclusão

  • O processo determinístico de Record Linkage, irá ser responsável pela maioria dos pares.

  • Para uma validação satisfatória de um processo de Record Linkage, quase sempre será necessário a revisão manual, até para validação do processo do Record Linkage.

  • Técnicas baseadas em Machine Learning, utilizam uma base de dados para treinamento de pares representativos de populações reais e distintas, é com isso é possível estimar os parâmetros para desenvolver modelos mais acertivos.

Exemplo

Nesta aula vamos utilizar bancos de dados simulados com informações hipotéticas sobre id, nome do paciente, nome da mãe e sua data de nascimento.

Clique aqui para acessar o script.

Referencias

  • Camargo Jr. KR, Coeli CM. Reclink: aplicativo para o relacionamento de base de dados, implementando o método probabilistic record linkage. Cad Saúde Pública 2000; 16:439-47.

  • Camargo Jr, Kenneth Rochel de, and Claudia Medina Coeli. “Going open source: some lessons learned from the development of OpenRecLink.” Cadernos de Saúde Pública 31 (2015): 257-263.

  • FELLEGI, I. P. & SUNTER, A. B., 1969. A theory for record linkage.

  • FLORES, Patrícia Viana Guimarães. Escolaridade materna, peso ao nascer e mortalidade neonatal: análise de dois períodos no Estado do Rio de Janeiro. Tese (Doutorado Saúde Coletiva) -Instituto de Estudos de Saúde Coletiva, Universidade Federal do Rio de Janeiro, Rio de Janeiro, 2013.

  • PRESTES, Isaías V. Pareamento de registros das grandes bases do SUS para permitir análises longitudinais de pacientes com câncer. Tese (Doutorado Epidemiologia) — Universidade Federal do Rio Grande do Sul, Porto Alegre, 2017.

  • Relatório do Banco mundial, disponível no site

  • Silva JPL, Travassos C, Vasconcellos MM, Campos LM. Revisão sistemática sobre encadeamento ou linkage de bases de dados secundários para uso em pesquisa em saúde no Brasil. Cad Saúde Colet (Rio J.) 2006; 14:197-224.